package com.iuie.ns.datum.mapper;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.iuie.ns.datum.vo.BlogInfoVO;
import com.iuie.ns.datum.vo.BlogReadRecordVO;
import com.iuie.ns.datum.vo.BookInfoVO;
import com.iuie.ns.frame.persistence.annotations.MyBatisRepository;

/**
 * blog mapper
 * @author iuie
 * @date 2017年8月24日 下午11:51:34
 */
@MyBatisRepository
public interface BlogMapper {

	/**
	 * 根据ID查询博客信息
	 * @param id
	 * @return
	 * @date 2017年8月24日 下午11:49:37
	 */
	BlogInfoVO findById(@Param("blogId") Long blogId);

	/**
	 * 根据博客类型查询博客列表
	 * @param blogType
	 * @return
	 * @date 2017年8月30日 上午9:53:13
	 */
	List<BlogInfoVO> findByBlogType(@Param("blogType") String blogType);

	/**
	 * 根据博客id删除博客信息
	 * @param id
	 * @date 2017年8月30日 上午10:18:48
	 */
	void deleteById(@Param("id") Long id);
	
	/**
	 * 根据博客名称查询
	 * @param blogName
	 * @return
	 */
	List<BlogInfoVO> findByBlogName(@Param("blogName") String blogName);

	/**
	 * 根据file_info查询
	 * @param id
	 * @return
	 */
	BlogInfoVO findByFileInfo(@Param("fileInfo") Long fileInfo);

	/**
	 * markdown形式修改博客
	 * @param blogInfo
	 */
	void updateMdBlog(@Param("blogInfo") BlogInfoVO blogInfo);

	/**
	 * 更新阅读次数
	 * @param blogId
	 */
	void updateBySignRead(@Param("blogId") Long blogId);

	/**
	 * 查询markdown博客根据时间范围
	 * @param startTime
	 * @param endTime
	 * @param expectLst
	 * @param userId
	 * @return
	 */
	List<BlogInfoVO> findMDBlogByTimeRange(@Param("startTime") Date startTime, @Param("endTime") Date endTime, 
			@Param("expectLst") List<String> expectLst, @Param("userId") String userId);

    
    /**
     * 查询博客的阅读记录
     * @param blogId
     * @return
     */
	List<BlogReadRecordVO> findReadRecodByBlogId(Long blogId);

	/**
	 * 添加阅读记录
	 * @param readId
	 * @param userId
	 * @param blogId
	 * @param date
	 */
	void saveBlogRead(@Param("readId")Long readId, @Param("userId")Long userId, @Param("blogId")Long blogId, @Param("date")Date date);

	/**
	 * update Blog BookId
	 * @param blogId
	 * @param bookId
	 */
	void updateBlogBookId(@Param("blogId")Long blogId, @Param("bookId")String bookId);

	/**
	 * 根据bookid得到博客
	 * @param bookId
	 * @return
	 */
	List<BookInfoVO> findBlogsByBookId(String bookId);

	/**
	 * find BlogByBookId
	 * @param bookId String
	 * @return List list
	 */
	List<BlogInfoVO> findBlogByBookId(@Param("bookId")String bookId);

	/**
	 * 更新博客备注
	 * @param blogId
	 * @param remark
	 * @date 2018年5月6日下午4:13:08
	 */
	Integer updateMdBlogRemark(@Param("blogId") Long blogId, @Param("remarks") String remarks);

}
